home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Belgian Amiga Club - ADF Collection
/
BS1 part 41.zip
/
BS1 part 41
/
Abacus diskdrives IO.adf
/
CH8
/
readsec.c
< prev
next >
Wrap
C/C++ Source or Header
|
1978-06-28
|
3KB
|
147 lines
/*-----------------------------------------------------*/
/* Read Sector with Trackdisk-Device */
/* */
/* JEA, 12-07-87 */
/*-----------------------------------------------------*/
#include <exec/types.h>
#include <exec/memory.h>
#include <devices/trackdisk.h>
/*-----------------------------------------------------*/
/* Turn Motor on or off */
/* */
/* */
/*-----------------------------------------------------*/
MotorSwitch( iosr, flag )
struct IOStdReq *iosr;
LONG flag;
{
iosr->io_Command = TD_MOTOR;
iosr->io_Length = flag; /* 1=an and 0=aus */
DoIO(iosr);
}
/*-----------------------------------------------------*/
/* Read Logical Block */
/* */
/* */
/*-----------------------------------------------------*/
LONG *GetBlock( iosr, block, map )
struct IOStdReq *iosr;
LONG block;
LONG *map;
{
LONG *ret = NULL;
iosr->io_Command = CMD_READ;
iosr->io_Length = TD_SECTOR;
iosr->io_Data = (APTR)map;
iosr->io_Offset = TD_SECTOR * block;
DoIO(iosr);
return(ret);
}
/*-----------------------------------------------------*/
/* Read Sector */
/* */
/* */
/*-----------------------------------------------------*/
LONG *GetTSH( iosr, track, sector, head, map )
struct IOStdReq *iosr;
LONG track;
LONG sector;
LONG head;
LONG *map;
{
LONG *ret = NULL;
iosr->io_Command = CMD_READ;
iosr->io_Length = TD_SECTOR;
iosr->io_Data = (APTR)map;
iosr->io_Offset = TD_SECTOR*(sector + NUMSECS*head
+ NUMSECS*NUMHEADS*track );
DoIO(iosr);
return(ret);
}
/*-----------------------------------------------------*/
/* Main Program */
/* */
/* */
/*-----------------------------------------------------*/
main()
{
struct MsgPort *diskport;
struct IOStdReq *diskreq;
LONG *buf;
LONG loop;
buf = (LONG*) AllocMem( 512L, MEMF_CHIP );
diskport = CreatePort( 0L, 0L );
diskreq = CreateStdIO( diskport );
OpenDevice( TD_NAME, 0, diskreq, 0 );
MotorSwitch( diskreq, 1L );
GetBlock( diskreq, 0L, buf );
for( loop=0; loop<128; loop++ ){
printf( "%lx ", buf[loop] );
}
printf( "\n\n" );
GetTSH( diskreq, 0L, 0L, 0L, buf );
for( loop=0; loop<128; loop++ ){
printf( "%lx ", buf[loop] );
}
printf( "\n" );
MotorSwitch( diskreq, 0L );
CloseDevice( diskreq );
DeleteStdIO( diskreq );
DeletePort( diskport );
FreeMem( buf, 512L );
}